package fr.afcepf.atod21.business;

import java.util.List;

import fr.afcepf.atod21.entity.Stagiaire;
import fr.afcepf.atod21.exception.Atod21Exception;

/**
 * Definition des methodes metier utilisees par l'application
 * contenant les regles de gestion.
 * @author Stagiaire
 */
public interface IBusinessStagiaire {

    /**
     * Methode permettant de rechercher un {@link Stagiaire}
     * a partir de son {@link Stagiaire#nom}.
     * @param nom le nom du {@link Stagiaire}
     * @return
     * <code>
     *      <ul>
     *          <li>une liste de {@link Stagiaire},
     *              si il en existe, contenant le nom passe en parametre.</li>
     *          <li>null si aucun ne correspond au critere de recherche.</li>
     *      </ul>
     * </code>
     */
    List<Stagiaire> rechercher(String nom);

    /**
     * Methode permettant de rechercher un {@link Stagiaire}
     * a partir de son {@link Organisme#id}.
     * @param idOrganisme le {@link Organisme.id} du {@link Stagiaire}
     * @return
     * <code>
     *      <ul>
     *          <li>une liste de {@link Stagiaire},
     *              si il en existe, contenant le nom passe en parametre.</li>
     *          <li>null si aucun ne correspond au critere de recherche.</li>
     *      </ul>
     * </code>
     */
    List<Stagiaire> rechercher(int idOrganisme);

    /**
     * Methode permettant d'ajouter un {@link Stagiaire}
     * a partir de son {@link Stagiaire#nom}.
     * @param stagiaire le {@link Stagiaire}.
     * @return
     * <code>
     *      <ul>
     *          <li>une liste de {@link Stagiaire},
     *              si il en existe, contenant le nom passe en parametre.</li>
     *          <li>null si aucun ne correspond au critere de recherche.</li>
     *      </ul>
     * </code>
     * @throws Atod21Exception exception lors de l'acces a la BDD.
     */
    Stagiaire ajouter(Stagiaire stagiaire) throws Atod21Exception;

    /**
     * Methode permettant de modifier l'entite {@link Stagiaire}.
     * @param stagiaire le {@link Stagiaire} a modifier.
     * @return
     * <code>
     *      <ul>
     *          <li>le {@link Stagiaire} avec son {@link Organisme}
     *          null si ca marche pas.</li>
     *          <li>le {@link Stagiaire} avec son {@link Organisme}
     *          toujours affecte si ca marche pas.</li>
     *      </ul>
     * </code>
     * @throws Atod21Exception exception lors de l'acces a la BDD.
     */
    Stagiaire renvoi(Stagiaire stagiaire) throws Atod21Exception;

}
